#include "gcd.h"
#include "gcd_driver.h"
#include "gcd_monitor.h"

int sc_main(int argc, char *argv[]) {
    sc_signal<sc_uint<WIDTH>> first, second, result;
    sc_signal<bool> reset;

    gcd gcd1("my_gcd");
    gcd1(first, second, reset, result);


    gcd_driver d1("my_driver");
    d1.d_first(first);
    d1.d_second(second);
    d1.d_reset(reset);

    gcd_monitor mo1("my_monitor");

    mo1.m_first(first);
    mo1.m_second(second);
    mo1.m_reset(reset);
    mo1.m_result(result);

    sc_start(100, sc_time_unit::SC_NS);

    return (0);
}
